//
// Created by win10 on 2024/12/30.
//
#include <stdio.h>

void print(int a[], int len) {
    for (int i = 0; i < len; i++) {
        printf("%d", a[i]);
        if (i < len - 1) {
            printf(" ");
        }
    }
    printf("\n");
}

void quick_sort(int q[], int l, int r, int len) {
    if (l >= r) return;

    // 选择首元素作为枢轴
    int x = q[l];
    int i = l, j = r;

    while (i < j) {
        while (i < j && q[j] >= x) j--;
        if (i < j) q[i] = q[j];
        while (i < j && q[i] < x) i++;
        if (i < j) q[j] = q[i];
    }
    q[i] = x;

    // 打印当前的数组状态
    print(q, len);

    // 对左右部分递归调用快速排序
    quick_sort(q, l, i - 1, len);
    quick_sort(q, i + 1, r, len);
}

int main() {
    int n;
    while (scanf("%d", &n) != EOF) {
        int a[n];
        for (int i = 0; i < n; i++) {
            scanf("%d", &a[i]);
        }

        quick_sort(a, 0, n - 1, n);
    }
    return 0;
}
